// reduce() 方法可以用来将数组转换为一个去重后的新数组。通过累积器的形式，逐个检查数组的元素是否已经存在于结果数组中。

const uniqueArray = arr => arr.reduce((acc, item) => {
    if (!acc.includes(item)) {
      acc.push(item);
    }
    return acc;
  }, []);
  
  console.log(uniqueArray([1, 2, 2, 3, 4, 4, 5])); // [1, 2, 3, 4, 5]


//   优点：
//     功能强大：reduce() 可以处理复杂的数组操作，不仅限于去重，适合更灵活的处理逻辑。
//     可读性强：对于熟悉 reduce() 的开发者，代码表达逻辑清晰。
//   缺点：
//     效率不高：使用 includes() 进行数组查找，每次查找的时间复杂度为 O(n)，因此整体时间复杂度为 O(n^2)。
//     代码复杂度较高：相对于 Set 的方式，reduce() 代码复杂一些，不如 Set 直观。